/**
 * 等值缩小（等值检查，来做类型的检查来缩小）
 * ===、!==、==、!=
 * */
// 1、第一个等值缩小的例子
// function example(x: string | number, y: string | boolean) {
//   if (x === y) {
//     x.toUpperCase()
//     y.toUpperCase()
//   } else {
//     console.log(x)
//     console.log(y)
//   }
// }
// 2、第二个等值缩小的例子
// function printAll_equality(strs: string | string[] | null) {
//   if (strs !== null) {
//     if (typeof strs === 'object') {
//       for (let i in strs) {
//         console.log(i)
//       }
//     } else if (typeof strs === 'string') {
//       console.log(strs)
//     } else {
//       // ...
//     }
//   }
// }
// 3、第三个等值缩小的例子
interface Container {
  value: number | null | undefined
}

function multiplyValue(container: Container, factor: number) {
  if (container.value != null) {
    console.log(container.value)
    container.value = factor
  }
}

// multiplyValue({ value: 5 }, 2)
// multiplyValue({ value: undefined }, 2)
// multiplyValue({ value: null }, 2)
// multiplyValue({ value: '5' }, 2)
